package com.example.func.service;

import com.example.func.dto.request.CreateBranchRequest;
import com.example.func.dto.request.CreateBranchWithRepoRequest;
import com.example.func.dto.request.MergeBranchRequest;
import com.example.func.dto.request.PullBranchRequest;
import com.example.func.dto.request.RollbackRequest;
import com.example.func.dto.request.RepositoryConfig;
import com.example.func.dto.response.BranchInfo;
import com.example.func.dto.response.MergeResult;

import java.util.List;

/**
 * Git 操作服务接口
 */
public interface GitService {

    /**
     * 获取所有分支列表
     */
    List<BranchInfo> listBranches();


    /**
     * 创建分支（指定仓库）
     */
    BranchInfo createBranchWithRepo(CreateBranchWithRepoRequest request);


    /**
     * 切换分支
     */
    void checkoutBranch(String branchName);

    /**
     * 合并分支
     */
    MergeResult mergeBranch(MergeBranchRequest request);

    /**
     * 检测合并冲突
     */
    List<String> detectConflicts(String sourceBranch, String targetBranch);

    /**
     * 回滚到指定提交
     */
    void rollback(RollbackRequest request);

    /**
     * 拉取远程分支到本地并生成测试文件
     * @param branchName 分支名称
     * @return 操作结果信息
     */
    String pullBranchAndCreateTestFile(String branchName);

}

